#ifndef __edaMove_h__
#define __edaMove_h__

#include "edaSolution.h"
#include "edaDefine.h"

class edaMove: public edaSerialize
{
 public:
  edaMove() {}
  edaMove(const edaMove &move) {}
  virtual ~edaMove() {}

  virtual edaMove* clone() const = 0;
  virtual void init(const edaSolution &sol) = 0;
  virtual double incrEval(const edaSolution &sol) = 0;
  virtual void update( edaSolution &sol ) const = 0;
  virtual edaMove& operator = (const edaMove& _move) = 0;
  virtual void Serialize( edaBuffer &buf, bool pack ) {}
  virtual bool operator == (const edaMove &_move) const = 0;

  setClassID(_SYSCLASSID_ + _CLSID_EDAMOVE_);
};

#endif
